<?php
App::uses('AppModel', 'Model');
/**
 * Pagamento Model
 *
 * @property User $User
 */
class Pagamento extends AppModel {

/**
 * Validation rules
 *
 * @var array
 */
	public $validate = array(
		'usuario_id' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'hash_bpag' => array(
			'notempty' => array(
				'rule' => array('notempty'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'confirmado' => array(
			'boolean' => array(
				'rule' => array('boolean'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'valor_total' => array(
			'decimal' => array(
				'rule' => array('decimal'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
	);

	//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * belongsTo associations
 *
 * @var array
 */
	public $belongsTo = array(
		'Usuario' => array(
			'className' => 'Usuario',
			'foreignKey' => 'usuario_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		)
	);
	
	public $hasMany = array(
		'CursosUsuario'=>array(
			'className'=>'CursosUsuario',
			'foreignKey'=>'pagamento_id',
			'dependent'=>true
		)
	);
	
	public function calculaPreco($usuario, $data = null){
		$this->Preco = ClassRegistry::init('DataPagamento');
		$preco = $this->Preco->buscaPreco($usuario['associacao_id'], $usuario['especializacao_id'], $data);
		if($preco == -1.00) return false;
		return $preco;
	}
	
	public function informacoes($dados, $usuario){
		$this->Curso = ClassRegistry::init('Curso');
		$informacoes_de_cursos = $this->Curso->informacoesPrecoCursos($dados['CursoUsuario']);
		$preco_a_pagar['preco'] = $this->calculaPreco($usuario['Usuario']);
		return array_merge($preco_a_pagar, $informacoes_de_cursos);
		/*$dados['Pagamento']['usuario_id'] = $usuario['id'];
		$dados['Pagamento']['confirmado'] = 0;
		$dados['Pagamento']['valor_total'] = $this->calculaPreco($usuario['Usuario']) + $this->Curso->calculaPrecoCursos($dados['CursoUsuario']);
		pr($dados);*/
	}
	
	public function efetuarInscricao($dados, $usuario_id){
		$save = array();
		if(isset($dados['Cursos']))
			foreach ($dados['Cursos'] as $item){
				$save['CursosUsuario'][] = array(
					'usuario_id' => $usuario_id,
					'curso_id' => $item['id'],
					'material' => false
				);
			}
		if(isset($dados['Materiais']))
			foreach ($dados['Materiais'] as $item){
				$save['CursosUsuario'][] = array(
					'usuario_id' => $usuario_id,
					'curso_id' => $item['id'],
					'material' => true
				);
			}
		$save['Pagamento'] = array(
			'usuario_id'=>$usuario_id,
			'confirmado'=>0,
			'valor_total' => $dados['valor_base']+$dados['valor_cursos']+$dados['valor_materiais']
		);
		return $this->saveAll($save);
	}
	
	public function getStatusAtual($id){
		$this->Transacao = ClassRegistry::init('PagseguroTransacao');
		return $this->Transacao->find('first', array('conditions'=>array('pagamento_id'=>$id), 'order'=>'date DESC'));
	}
	
	public function formas_de_pagamento(){
		$query = "select distinct(pagseguro_transacoes.pagamento_id),
				pagseguro_transacoes.pagseguro_formas_pagamento_id,
				pagamentos.valor_total from pagamentos
				join pagseguro_transacoes on (pagseguro_transacoes.pagamento_id = pagamentos.usuario_id)
				order by date DESC";
		$dados = $this->query($query);
		$formas_de_pagamento = array();
		foreach($dados as $item){
			if(!isset($formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['total']))
				$formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['total'] = 0;
			if(!isset($formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['valor']))
				$formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['valor'] = 0;
			$formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['total']++;
			$formas_de_pagamento[$item['pagseguro_transacoes']['pagseguro_formas_pagamento_id']]['valor']+=$item['pagamentos']['valor_total'];
		}
		return $formas_de_pagamento;
	}
}
